/*
 *  Copyright 2020-2025 the original author or authors.
 *  You cannot use this file unless authorized by the author.
 */

package org.ipig.search;

/**
 * 索引信息
 *
 * @author <a href="mailto:comchnts@163.com">chinats</a>
 * @version $$Id$$
 * @since 1.0
 */
public interface IndexInfo {
    /** 索引分片数量，索引创建之后不能更改   */
    int DEFAULT_SHARDS_NUM = 6;
    /** 数据备份数,索引创建之后可更改   */
    int DEFAULT_REPLICAS_NUM = 0;
    /**
     * 返回索引名称
     * <li><b>索引名必须小写</b>
     *
     * @return String
     */
    public String getIndexName();

    /**
     * 返回索引的类型
     *
     * @return String
     */
    public String getIndexTypeName();

    /**
     * 返回索引的映射
     * <li>转化可参考BytesReference.bytes(builder).utf8ToString();
     *
     * @return
     */
    public String buildIndexMapping();

    /**
     * 索引分片数量，索引创建之后不能更改
     *
     * @return int
     */
    default public int getIndexShardsNum() {
        return DEFAULT_SHARDS_NUM;
    }

    /**
     * 数据备份数,索引创建之后可更改
     *
     * @return int
     */
    default public int getIndexReplicasNum() {
        return DEFAULT_REPLICAS_NUM;
    }
}
